Mybatis的if标签判断空字符串问题 | 您所在的位置:网站首页 › mybatis if 等于null › Mybatis的if标签判断空字符串问题 |
1.问题描述
图1中的查询,status条件没有起作用,图2为执行的sql语句,图3为status的枚举类 图1 图2 图3 2.原因分析考虑到配置文件不需要编译,为了防止手动书写带来的一些问题,就直接把别的地方的copy过来了,原来的是string类型的,属性 != '' 通过Mybatis源码的分析知道: mybatis在预编译sql时,使用OGNL表达式来解析if标签,对于Integer类型属性,在判断不等于’ '时,例如我写的那样 status != ’ ',OGNL会返回 ’ ’ 的长度, 源码: 故表达式status != ’ '会被当做status != 0来判断,所以当status=0时,if条件判断不通过,动态SQL也就不生效啦。 3.经验教训3.1 Integer等数字类型的,如果不需要过滤掉0的情况下,写条件判断的时候,不要带上 != '',如果带上 ,需要加上 or 属性 == 0 ; 3.2 出现类似某个条件没有起作用时,不妨看下xml文件 参考文献: (143条消息) Mybatis 判断 Integer类型,值为0动态SQL不生效_mybatis判断integer为0_Linda033的博客-CSDN博客 (143条消息) Mybatis if判断Integer类型的值不等于''引发的问题(!=''等价于!=0)_mybatis if 不等于_p7+的博客-CSDN博客
|
CopyRight 2018-2019 实验室设备网 版权所有 |